package com.eyealike.client.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class IterableUtils
{
	static public <D> Iterable<D> one( D d )
	{
		if( d == null ) throw new NullPointerException();
		return Collections.singleton( d );
	}

	static public <D> Iterable<D> any( D... ds )
	{
		if( ds.length == 0 ) return Collections.emptySet();
		if( ds.length == 1 ) {
			if( ds[ 0 ] == null ) return null;
			return Collections.singleton( ds[ 0 ] );
		}
		List<D> list = null;
		for( D d : ds ) {
			if( d == null ) continue;
			if( list == null ) list = new ArrayList<D>( ds.length );
			list.add( d );
		}
		return list;
	}

	static public <D> Iterable<D> first( D... ds )
	{
		for( D d : ds ) {
			if( d != null ) return Collections.singleton( d );
		}
		return null;
	}

	static public <D> Iterable<D> all( D... ds )
	{
		for( D d : ds ) {
			if( d == null ) throw new NullPointerException();
		}
		return Arrays.asList( ds );
	}
}
